﻿#define _CRT_SECURE_NO_WARNINGS 1


//#include <stdio.h>


//// 归并排序递归实现
//void _MergeSort(int* a, int* tmp, int begin, int end)
//{
//
//	if (begin >= end)
//	{
//		return;
//	}
//	int mid = (begin + end) / 2;
//
//	_MergeSort(a, tmp, begin, mid);
//	_MergeSort(a, tmp, mid + 1, end);
//
//	int begin1 = begin, end1 = mid;
//	int begin2 = mid + 1, end2 = end;
//
//	int i = begin;
//	while (begin1 <= end1 && begin2 <= end2)
//	{
//		if (a[begin1] < a[begin2])
//		{
//			tmp[i++] = a[begin1++];
//		}
//		else
//		{
//			tmp[i++] = a[begin2++];
//		}
//	}
//	while (begin1 <= end1)
//	{
//		tmp[i++] = a[begin1++];
//	}
//	while (begin2 <= end2)
//	{
//		tmp[i++] = a[begin2++];
//	}
//	memcpy(a + begin, tmp + begin, (end - begin + 1) * sizeof(int));
//}
//
//void MergeSort(int* a, int n)
//{
//	int* tmp = (int*)malloc(sizeof(int) * n);
//	if (tmp == NULL)
//	{
//		perror("malloc fail");
//		return;
//	}
//
//	_MergeSort(a, tmp, 0, n - 1);
//
//	free(tmp);
//	tmp = NULL;
//}
//
//void TestMergeSort()
//{
//	int a[] = { 6,1,2,7,9,3,4,5,10,8,11 };
//	for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
//	{
//		printf("%d ", a[i]);
//	}
//	printf("\n");
//	MergeSort(a, sizeof(a) / sizeof(a[0]));
//	for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
//	{
//		printf("%d ", a[i]);
//	}
//}
//
//// 归并排序非递归实现
//void MergeSortNonR(int* arr, int begin, int end)//归并排序非递归实现
//{
//	int* tmp = (int*)malloc(sizeof(int) * (end - begin + 1));//开辟临时数组tmp
//	if (tmp == NULL)
//	{
//		printf("malloc false\n");
//		exit(-1);
//	}
//
//	int gap = 1;//默认先合并一个
//
//	while (gap < (end - begin + 1))
//	{
//		for (int i = 0; i <= end; i = i + 2 * gap)
//		{
//			int left = i;
//			int right = i + 2 * gap - 1;
//			int mid = (right + left) / 2;
//			if (right > end)//如果有区间越界，则右区间给到end（末尾）
//			{
//				right = end;
//			}
//
//			MergeArr(arr, tmp, left, mid, right);
//		}
//
//		gap = gap * 2;
//	}
//
//}
//// 计数排序
//void CountSort(int* a, int n)
//{
//	int min = a[0], max = a[0];
//	for (int i = 0; i < n; i++)
//	{
//		if (a[i] < min)
//		{
//			min = a[i];
//		}
//		if (a[i] > max)
//		{
//			max = a[i];
//		}
//	}
//	int range = max - min + 1;
//	int* count = (int*)calloc(range, sizeof(int));
//	if (count == NULL)
//	{
//		perror("calloc fail");
//		return;
//	}
//	for (int i = 0; i < n; i++)
//	{
//		count[a[i] - min]++;
//	}
//	int j = 0;
//	for (int i = 0; i < range; i++)
//	{
//		while (count[i]--)
//		{
//			a[j++] = i + min;
//		}
//	}
//	free(count);
//}
//

//#include <stdio.h>
//#include <stdlib.h>
//
//int rand = 10;
//int main()
//{
//	printf("%d\n", rand);
//	return 0;
//}


//#include <stdio.h>
//#include <stdlib.h>
//// 1. 正常的命名空间定义
//// bit是命名空间的名字，⼀般开发中是⽤项⽬名字做命名空间名。
//namespace lcy
//{
//	// 命名空间中可以定义变量/函数/类型
//	int rand = 10;
//	int Add(int left, int right)
//	{
//		return left + right;
//	}
//	struct Node
//	{
//		struct Node* next;
//		int val;
//	};
//}
//int main()
//{
//	// 这⾥默认是访问的是全局的rand函数指针
//	printf("%p\n", rand);
//	// 这⾥指定lcy命名空间中的rand
//	printf("%d\n", lcy::rand);
//	return 0;
//}


//#include <stdio.h>
//#include <stdlib.h>
//
//namespace lcy
//{
//	namespace C
//	{
//		int rand = 1;
//		int Add(int x, int y)
//		{
//			return x + y;
//		}
//	}
//	namespace Y
//	{
//		int rand = 2;
//		int Add(int x, int y)
//		{
//			return (x + y) * 10;
//		}
//	}
//}
//
//int main()
//{
//	printf("%d\n", lcy::C::rand);
//	printf("%d\n", lcy::C::Add(1, 2));
//
//	printf("%d\n", lcy::Y::rand);
//	printf("%d\n", lcy::Y::Add(1, 2));
//
//
//	return 0;
//}

//#include <stdio.h>
//
//namespace lcy
//{
//	int a = 0;
//	int b = 1;
//}
//
////"a" : 未声明的标识符
//int main()
//{
//	printf("%d\n", a);
//	return 0;
//}
//
////指定命名空间
//int main()
//{
//	printf("%d\n", lcy::a);
//	return 0;
//}
//
////using将命名空间的某个成员展开
//using lcy::b;
//int main()
//{
//	printf("%d\n", lcy::a);
//	printf("%d\n", b);
//	return 0;
//}
//
////using将命名空间的全部成员展开
//using namespace lcy;
//int main()
//{
//	printf("%d\n", a);
//	printf("%d\n", b);
//	return 0;
//}


//#include <iostream>
//using namespace std;
//
//
//int main()
//{
//	int a = 0;
//	double b = 0.1;
//	char c = 'x';
//
//	cout << a << "" << b << "" << c << endl;
//	std::cout << a << "" << b << "" << c << std::endl;
//
//	scanf("%d %lf",&a,&b);
//	printf("%d %lf\n", &a, &b);
//
//	//可以自动识别变量的类型
//	cin >> a;
//	cin >> b >> c;
//
//	cout << a << endl;
//	cout << b << "" << c << endl;
//
//	return 0;
//}

#include<iostream>
using namespace std;


int main()
{
	int a = 2;
	int& b = a;
	int& c = a;
	b++;
	cout << c << endl;
	cout << &c << endl;
	cout << &b << endl;
	return 0;
}